{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true,
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "# Pytorch入门实战（3）：使用简单CNN实现物体分类"
   ]
  },
  {
   "cell_type": "markdown",
   "source": [
    "# 本文涉及知识点\n",
    "[PytorchVision Transforms的基本使用](https://blog.csdn.net/zhaohongfei_358/article/details/122799782)\n",
    "\n",
    "\n",
    "[Pytorch nn.Linear的基本用法\n",
    "](https://blog.csdn.net/zhaohongfei_358/article/details/122797190)\n",
    "\n",
    "[nn.Conv2d官方文档](https://pytorch.org/docs/stable/generated/torch.nn.Conv2d.html)"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% md\n"
    }
   }
  },
  {
   "cell_type": "markdown",
   "source": [
    "# 本文内容\n",
    "\n",
    "使用自己随便构造的一个简单的CNN网络，使用CIFAR10数据集（包含10种类别，图片大小为32x32）训练一个分类网络。\n",
    "\n",
    "本文所使用到的环境如下:\n",
    "\n",
    "```\n",
    "torch==1.10.2\n",
    "```"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% md\n"
    }
   }
  },
  {
   "cell_type": "markdown",
   "source": [
    "# 数据预处理"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% md\n"
    }
   }
  },
  {
   "cell_type": "markdown",
   "source": [
    "首先导入需要的包："
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% md\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "outputs": [],
   "source": [
    "import torch\n",
    "import torchvision\n",
    "import torchvision.transforms as transforms\n",
    "import torch.nn as nn\n",
    "import torch.optim as optim\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "markdown",
   "source": [
    "定义transform，表明图片的处理方式和batch_size："
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% md\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "outputs": [],
   "source": [
    "# 如果你的内存不够的话，可以减小batch_size\n",
    "# 一般batch_size越大，模型越稳定，训练速度越快。（但也不是越大越好）\n",
    "batch_size = 16\n",
    "\n",
    "transform = transforms.Compose(\n",
    "    [transforms.ToTensor(), # 将图片转为Tensor类型\n",
    "     # 对图片进行正则化。第一个参数为mean(均值)，第二个为std(方差)。每个参数之所以有三个0.5，是因为有RGB三个通道。\n",
    "     # 综上，这句就是把图片的RGB三个通道都正则化到均值为0.5，方差为0.5的分布上。\n",
    "     transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))])"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "markdown",
   "source": [
    "之后开始准备数据集，这里直接使用官方提供的数据集。如果你的网够快，可以把`download=False`改为`True`，或者通过[百度网盘](https://pan.baidu.com/s/120cx2BA2hZ2nB_qaBgekdA?pwd=6aof)下载，然后解压到`data`目录下"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% md\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Downloading https://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz to ./data\\cifar-10-python.tar.gz\n"
     ]
    },
    {
     "data": {
      "text/plain": "  0%|          | 0/170498071 [00:00<?, ?it/s]",
      "application/vnd.jupyter.widget-view+json": {
       "version_major": 2,
       "version_minor": 0,
       "model_id": "411ce37db9e4485cb517c952f8c9abf5"
      }
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Extracting ./data\\cifar-10-python.tar.gz to ./data\n",
      "Files already downloaded and verified\n"
     ]
    }
   ],
   "source": [
    "trainset = torchvision.datasets.CIFAR10(root='./data', train=True,\n",
    "                                        download=True, transform=transform)\n",
    "trainloader = torch.utils.data.DataLoader(trainset, batch_size=batch_size,\n",
    "                                          shuffle=True)\n",
    "testset = torchvision.datasets.CIFAR10(root='./data', train=False,\n",
    "                                       download=True, transform=transform)\n",
    "testloader = torch.utils.data.DataLoader(testset, batch_size=batch_size,\n",
    "                                         shuffle=False)\n",
    "\n",
    "# CIFAR10总共10个类别\n",
    "classes = ('plane', 'car', 'bird', 'cat',\n",
    "           'deer', 'dog', 'frog', 'horse', 'ship', 'truck')"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "markdown",
   "source": [
    "接下来随便打印几个看看："
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% md\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "outputs": [],
   "source": [
    "def imshow(img):\n",
    "\t# 因为之前正则化了，所以显示图片前要恢复\n",
    "    img = img / 2 + 0.5     # unnormalize\n",
    "    # 转成Numpy.ndarray格式，plt不认tensor\n",
    "    npimg = img.numpy()\n",
    "    # plt.imshow接受的图片shape为(h, w, c)\n",
    "    # 即通道在最后一维，而传过来的img是(c, h, w)\n",
    "    # 所以要用transpose改一下\n",
    "    plt.imshow(np.transpose(npimg, (1, 2, 0)))\n",
    "    plt.show()"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "outputs": [
    {
     "data": {
      "text/plain": "<Figure size 432x288 with 1 Axes>",
      "image/png": "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\n"
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "car   car   plane truck horse horse dog   horse car   plane dog   bird  frog  deer  bird  horse\n"
     ]
    }
   ],
   "source": [
    "# 获取一些图片及其对应的标签\n",
    "dataiter = iter(trainloader)\n",
    "\"\"\"\n",
    "这里images是一个tensor，shape为(16, 3, 32, 32)\n",
    "\t其中16为batch_size，即16张图片，3为RGB通道，图片大小为32x32\n",
    "labels也是tensor，shape为(16)，为每个图片的对应的标签。\n",
    "\"\"\"\n",
    "images, labels = dataiter.next()\n",
    "\n",
    "\"\"\"\n",
    "make_grid：制作表格。即把多张图片拼到一张中去。\n",
    "\t\t   nrow=8，表示生成表格的列数。\n",
    "从下面的输出可以看到，images的16张图片被make_grid\n",
    "按照2x8的表格拼成了一张大图片。该方法方便人们进行\n",
    "图像展示。\n",
    "\"\"\"\n",
    "imshow(torchvision.utils.make_grid(images, nrow=8))\n",
    "# print labels\n",
    "print(' '.join(f'{classes[labels[j]]:5s}' for j in range(batch_size)))"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "markdown",
   "source": [
    "# 定义CNN分类模型"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% md\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "outputs": [],
   "source": [
    "class Net(nn.Module):\n",
    "    def __init__(self):\n",
    "        super().__init__()\n",
    "        \"\"\"\n",
    "      \t定义卷积层, nn.Conv2d官方文档：https://pytorch.org/docs/stable/generated/torch.nn.Conv2d.html\n",
    "      \tnn.Conv2d包含三个重要参数：\n",
    "      \t\tin_channels: 输入的通道数\n",
    "      \t\tout_channels: 输出的通道数\n",
    "      \t\tkernel_size: 卷积核的大小\n",
    "      \t\tstride: 步长，默认为1\n",
    "      \t\tpadding: 填充，默认为0，即不进行填充\n",
    "\n",
    "      \t补充：这里卷积层2d的意思是数据是“2维的”，\n",
    "      \t\t  例如图片就是2维数据（长×宽）。同理也有Conv1d，\n",
    "      \t\t  是针对于文本、信号等1维数据，也有Conv3d\n",
    "      \t\t  是针对视频等这种3维数据。\n",
    "      \t\"\"\"\n",
    "        self.classifier = nn.Sequential(\n",
    "            nn.Conv2d(3, 6, 5),\n",
    "            # 激活函数\n",
    "            nn.ReLU(),\n",
    "            # 使用MaxPool进行下采样。\n",
    "            nn.MaxPool2d(2, 2),\n",
    "            nn.Conv2d(6, 16, 5),\n",
    "            nn.ReLU(),\n",
    "            nn.MaxPool2d(2, 2),\n",
    "            # 当完成卷积后，使用flatten将数据展开\n",
    "            # 即将tensor的shape从(batch_size, c, h, w)变成(batch_size, c*h*w)，这样才能送给全连接层\n",
    "            nn.Flatten(),\n",
    "            # 最后接全连接层。\n",
    "            # 计算方式可以参考：https://blog.csdn.net/zhaohongfei_358/article/details/123269313\n",
    "            nn.Linear(16 * 5 * 5, 120),\n",
    "            nn.ReLU(),\n",
    "            nn.Linear(120, 84),\n",
    "            nn.ReLU(),\n",
    "            nn.Linear(84, 10)\n",
    "            # 注意这里并没有调用Softmax，也不能调Softmax\n",
    "            # 这是因为Softmax被包含在了CrossEntropyLoss损失函数中\n",
    "            # 如果这里调用的话，就会调用两遍，最后网络啥都学不着\n",
    "        )\n",
    "\n",
    "    def forward(self, x):\n",
    "        return self.classifier(x)"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "outputs": [],
   "source": [
    "net = Net()\n",
    "# 使用简单的CrossEntorpyLoss作为损失函数，一般多分类问题都用这个\n",
    "criterion = nn.CrossEntropyLoss()\n",
    "# 使用简单的SGD作为优化器\n",
    "optimizer = optim.SGD(net.parameters(), lr=0.001, momentum=0.9)"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "markdown",
   "source": [
    "# 训练网络"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% md\n"
    }
   }
  },
  {
   "cell_type": "markdown",
   "source": [
    "开始训练网络，由于网络较小，这里直接用cpu进行训练"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% md\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[1,  2000] loss: 2.113\n",
      "[2,  2000] loss: 1.567\n",
      "[3,  2000] loss: 1.406\n",
      "[4,  2000] loss: 1.280\n",
      "[5,  2000] loss: 1.194\n",
      "[6,  2000] loss: 1.121\n",
      "[7,  2000] loss: 1.063\n",
      "[8,  2000] loss: 1.017\n",
      "[9,  2000] loss: 0.966\n",
      "[10,  2000] loss: 0.924\n",
      "[11,  2000] loss: 0.885\n",
      "[12,  2000] loss: 0.848\n",
      "[13,  2000] loss: 0.825\n",
      "[14,  2000] loss: 0.787\n",
      "[15,  2000] loss: 0.758\n",
      "[16,  2000] loss: 0.735\n",
      "[17,  2000] loss: 0.698\n",
      "[18,  2000] loss: 0.679\n",
      "[19,  2000] loss: 0.655\n",
      "[20,  2000] loss: 0.630\n",
      "Finished Training\n"
     ]
    }
   ],
   "source": [
    "# 把所有训练样本看过一遍称为1个epoch\n",
    "# 简单起见，这里只训练20个epochs\n",
    "epochs = 20\n",
    "\n",
    "for epoch in range(epochs):\n",
    "\t# 记录一下损失\n",
    "    running_loss = 0.0\n",
    "    for i, data in enumerate(trainloader):\n",
    "\t\t# trainloader返回的是tuple，第一个是图片数，第二个对应的labels\n",
    "        inputs, labels = data\n",
    "\n",
    "        # 清除之前的梯度\n",
    "        optimizer.zero_grad()\n",
    "\n",
    "        # 进行前向传播\n",
    "        outputs = net(inputs)\n",
    "        # 计算损失\n",
    "        loss = criterion(outputs, labels)\n",
    "        # 反向传播\n",
    "        loss.backward()\n",
    "        # 更新参数\n",
    "        optimizer.step()\n",
    "\n",
    "        # 记录损失，每2000次打印一次损失\n",
    "        running_loss += loss.item()\n",
    "        if i % 2000 == 1999:\n",
    "            print(f'[{epoch + 1}, {i + 1:5d}] loss: {running_loss / 2000:.3f}')\n",
    "            running_loss = 0.0\n",
    "\n",
    "print('Finished Training')"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "markdown",
   "source": [
    "在训练了20个epoch后，损失降到了0.648。可以看到损失还在下降，大家可以尝试多训练一段时间。"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% md\n"
    }
   }
  },
  {
   "cell_type": "markdown",
   "source": [
    "# 测试模型"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% md\n"
    }
   }
  },
  {
   "cell_type": "markdown",
   "source": [
    "测试下模型总的精准率："
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "outputs": [
    {
     "ename": "SyntaxError",
     "evalue": "invalid character in identifier (<ipython-input-11-ffc46ef5d01a>, line 1)",
     "output_type": "error",
     "traceback": [
      "\u001B[1;36m  File \u001B[1;32m\"<ipython-input-11-ffc46ef5d01a>\"\u001B[1;36m, line \u001B[1;32m1\u001B[0m\n\u001B[1;33m    测试下模型总的精准率：\u001B[0m\n\u001B[1;37m              ^\u001B[0m\n\u001B[1;31mSyntaxError\u001B[0m\u001B[1;31m:\u001B[0m invalid character in identifier\n"
     ]
    }
   ],
   "execution_count": 11
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Accuracy of the network on the 10000 test images: 64 %\n"
     ]
    }
   ],
   "source": [
    "correct = 0 # 记录正确的数量\n",
    "total = 0 # 记录总数\n",
    "\n",
    "# torch.no_grad表示不需要计算梯度。\n",
    "with torch.no_grad():\n",
    "    for data in testloader:\n",
    "        images, labels = data\n",
    "\t\t# 前向传播\n",
    "        outputs = net(images)\n",
    "        \"\"\"\n",
    "\t\toutputs.shape为(16, 10)，batch_size为16, 10为类别\n",
    "\t\toutput这16张图片的各个类别的可能性（未经Softmax处理）\n",
    "\t\t所以通过torch.max找到最大的那个。\n",
    "\t\ttorch.max接受两个参数，第一个是tensor，第二个是dim（维度）\n",
    "\t\t\t\t 这里传1，意思是在类别这个维度上取最大的\n",
    "\t\ttorch.max有两个输出，values和indexes，\n",
    "\t\t\t\t values就是最大的数是什么，\n",
    "\t\t\t\t indexes是这些最大的数的index是什么\n",
    "\t\t这里我们只需要index即可，所以忽略第一个参数\n",
    "\t\t\"\"\"\n",
    "        _, predicted = torch.max(outputs, 1)\n",
    "        # 记录总数量\n",
    "        total += labels.size(0)\n",
    "        # 计算正确数量\n",
    "        correct += (predicted == labels).sum().item()\n",
    "\n",
    "print(f'Accuracy of the network on the 10000 test images: {100 * correct // total} %')"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "markdown",
   "source": [
    "接下来计算下每个类别精准率："
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% md\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Accuracy for class: plane is 80.0 %\n",
      "Accuracy for class: car   is 70.5 %\n",
      "Accuracy for class: bird  is 53.7 %\n",
      "Accuracy for class: cat   is 46.3 %\n",
      "Accuracy for class: deer  is 55.6 %\n",
      "Accuracy for class: dog   is 50.8 %\n",
      "Accuracy for class: frog  is 77.8 %\n",
      "Accuracy for class: horse is 67.4 %\n",
      "Accuracy for class: ship  is 73.6 %\n",
      "Accuracy for class: truck is 70.9 %\n"
     ]
    }
   ],
   "source": [
    "# 统计每个类别的正确数量和总数量\n",
    "correct_pred = {classname: 0 for classname in classes}\n",
    "total_pred = {classname: 0 for classname in classes}\n",
    "\n",
    "# again no gradients needed\n",
    "with torch.no_grad():\n",
    "    for data in testloader:\n",
    "        images, labels = data\n",
    "        outputs = net(images)\n",
    "        _, predictions = torch.max(outputs, 1)\n",
    "        # collect the correct predictions for each class\n",
    "        for label, prediction in zip(labels, predictions):\n",
    "            if label == prediction:\n",
    "                correct_pred[classes[label]] += 1\n",
    "            total_pred[classes[label]] += 1\n",
    "\n",
    "\n",
    "# print accuracy for each class\n",
    "for classname, correct_count in correct_pred.items():\n",
    "    accuracy = 100 * float(correct_count) / total_pred[classname]\n",
    "    print(f'Accuracy for class: {classname:5s} is {accuracy:.1f} %')"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "markdown",
   "source": [
    "# 参考文献\n",
    "\n",
    "[pytorch官方CNN分类样例](https://pytorch.org/tutorials/beginner/blitz/cifar10_tutorial.html): https://pytorch.org/tutorials/beginner/blitz/cifar10_tutorial.html"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% md\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "outputs": [],
   "source": [],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}